package com.jiantong.work.service;

import com.jiantong.work.model.Harmless;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by niufei on 2017/3/24.
 *
 */
public interface HarmlessReadService {

    /**
     * 查询无害化的一条单据 根据id
     * @param id 主键id
     * @return Harmless 对象
     */
    Response<Harmless> findById(Long id);

    /**
     * 查询无害化单据状态
     * @param id 主键id
     * @return 无害化单据状态
     */
    Response<Map<String , Object>> findStatusById(Long id);

    /**
     * 查询无害化单据状态 和 处理方式
     * @param id 主键id
     * @return Map<String , Integer>
     */
    Response<Map<String , Integer>> findStatusAndTreatment(Long id);

    /**
     * 无害化占比图
     * @param start 从日起
     * @param end 到日期
     * @param animalType 动物种类
     * @return List<Map<String , Integer>>
     */
    Response<List<Map<String , Integer>>> findSumIsLocal(Date start , Date end , Integer animalType);

    /**
     * 无害化占比图
     * @param start 从日起
     * @param end 到日期
     * @param animalType 动物种类
     * @return List<Map<String , Integer>>
     */
    Response<List<Map<String , Integer>>> findSumReportType(Date start , Date end , Integer animalType);

    /**
     * 无害化占比图(7)
     * @param animalType 动物种类
     * @return List<Map<String , Object>>
     */
    Response<List<Map<String , Object>>> findAWeekSumIsLocal(Integer animalType);

    /**
     * 无害化占比图(7)
     * @param animalType 动物种类
     * @return List<Map<String , Object>>
     */
    Response<List<Map<String , Object>>> findAWeekSumReportType(Integer animalType);

    /**
     * 分页查询无害化代码 -- 政府端
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param statuses 状态类型
     * @return Paging<Harmless> 对象
     */
    Response<Paging<Harmless>> pagingHarmless(Integer pageNo, Integer pageSize ,List<Integer> statuses,Long breedFactoryId, Long butcherFactoryId);

    /**
     * 分页查询无害化代码 -- 养殖端
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param statuses 状态类型
     * @return Paging<Harmless> 对象
     */
    Response<Paging<Harmless>> farmPagingHarmless(Integer pageNo, Integer pageSize ,List<Integer> statuses , Long breedFactoryId);

    /**
     * 分页查询无害化代码 -- 屠宰端
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param statuses 状态类型
     * @return Paging<Harmless> 对象
     */
    Response<Paging<Harmless>> butcheryPagingHarmless(Integer pageNo, Integer pageSize ,List<Integer> statuses,Long butcherFactoryId);

    /**
     * 分页查询无害化代码 -- 查询员
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param statuses 状态类型
     * @param reportTypes 单据类型
     * @return Paging<Harmless> 对象
     */
    Response<Paging<Harmless>> pagingHarmlessAll(Integer pageNo, Integer pageSize ,List<Integer> statuses,List<Integer> reportTypes);

    /**
     * 通用条件查询
     * @param pageNo
     * @param pageSize
     * @param criteria
     * @return
     */
    Response <Paging<Harmless>>pagingCommon(Integer pageNo, Integer pageSize , Map criteria);

    Response<List<String>> reportType();

    Response<List<Map>> harmlessranking(Map criteria);

    Response<List<Map>> harmlesspic(Map criteria);

    Response<List<Harmless>> selectByFactoryIds(Map criteria);


    /**
     * 溯源所用
     * @param markNumber 耳标号
     * @param reportId 单据ID
     * @return Harmless
     */
    Response<Harmless> findHarmlessByMarkNumberAndReportId(String markNumber,Long reportId);

}
